print("装饰器##################################################start")


# 使用代码使用装饰器
# 定义日志装饰器
def my_log(func):
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)

    return wrapper


# 使用定义的日志装饰器
@my_log
def now():
    print("2018-11-6")


now()  # log(now)

# 定义日志装饰器
import functools


def my_log2(text):
    def decorator(func):
        # @functools.wraps(func) 反返回出去的方法名保持为传入方法名
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)

        return wrapper

    return decorator


@my_log2("log")
def now2():
    print("2018-11-06")


n2 = now2  # now2 = my_log2('execute')(now2)
print(n2.__name__)
print("装饰器##################################################end\n")
